﻿Imports System.Data.SqlClient

Public Class EventoDAO

    Public Function insertar(ByVal modelo As Evento) As Evento
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "INSERT INTO EVENTO (PROVEEDOR_IDPROVEEDOR, DEPORTE_IDDEPORTE, UBICACION, DESCRIPCION, FECHA_EVENTO) VALUES (@VALOR2, @VALOR3, @VALOR4, @VALOR5, @VALOR6)"

            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR2", modelo.idproveedor)
            cmd.Parameters.AddWithValue("@VALOR3", modelo.iddeporte)
            cmd.Parameters.AddWithValue("@VALOR4", modelo.ubicacion)
            cmd.Parameters.AddWithValue("@VALOR5", modelo.descripcion)
            cmd.Parameters.AddWithValue("@VALOR6", modelo.fecha_evento)


            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("EventoDAO: No insertó")
            End If

            ' LEER EL ULTIMO ID
            sql = "SELECT @@IDENTITY"
            cmd = New SqlCommand(sql, cn)
            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            If dr.Read Then
                modelo.idevento = CType(dr(0), Integer)
            End If

            dr.Close()
            cn.Close()

        Catch ex As Exception
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return modelo

    End Function


    Public Function buscarPorFecha_evento(ByVal fecha_evento As String) As Collection
        Dim lista As New Collection

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT IDEVENTO, PROVEEDOR_IDPROVEEDOR, DEPORTE_IDDEPORTE, UBICACION, DESCRIPCION, FECHA_EVENTO FROM EVENTO WHERE UPPER(FECHA_EVENTO) LIKE @VALOR5"
            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR5", "%" + fecha_evento.ToUpper + "%")

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()

            While dr.Read
                Dim modelo As New Evento
                modelo.idevento = dr(0).ToString
                modelo.idproveedor = dr(1).ToString
                modelo.iddeporte = dr(2).ToString
                modelo.ubicacion = dr(3).ToString
                modelo.descripcion = dr(4).ToString
                modelo.fecha_evento = dr(5).ToString

                lista.Add(modelo)
            End While

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return lista
    End Function





    Public Function listar() As Collection
        Dim lista As New Collection

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT IDEVENTO,PROVEEDOR_IDPROVEEDOR, DEPORTE_IDDEPORTE, UBICACION, DESCRIPCION, FECHA_EVENTO FROM EVENTO"
            Dim cmd As New SqlCommand(sql, cn)

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            While dr.Read
                Dim modelo As New Evento
                modelo.idevento = dr(0).ToString
                modelo.idproveedor = dr(1).ToString
                modelo.iddeporte = dr(2).ToString
                modelo.ubicacion = dr(3).ToString
                modelo.descripcion = dr(4).ToString
                modelo.fecha_evento = dr(5).ToString
                lista.Add(modelo)
            End While

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return lista
    End Function



    Public Function obtener(ByVal idevento As String) As Evento
        Dim modelo As New Evento

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT IDEVENTO,PROVEEDOR_IDPROVEEDOR, DEPORTE_IDDEPORTE, UBICACION, DESCRIPCION, FECHA_EVENTO FROM EVENTO WHERE IDEVENTO=@VALOR4"
            Dim cmd As New SqlCommand(sql, cn)

            cmd.Parameters.AddWithValue("@VALOR4", idevento)

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            If dr.Read Then
                modelo.idevento = dr(0).ToString
                modelo.idproveedor = dr(1).ToString
                modelo.iddeporte = dr(2).ToString
                modelo.ubicacion = dr(3).ToString
                modelo.descripcion = dr(4).ToString
                modelo.fecha_evento = dr(5).ToString
              

            End If

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return modelo
    End Function



    Public Sub eliminar(ByVal idevento As String)
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "DELETE FROM EVENTO WHERE IDEVENTO=@VALOR0"

            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR0", idevento)

            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("EventoDAO: No eliminó")
            End If

            cn.Close()

        Catch ex As Exception
            Throw New DAOExcepcion(ex.ToString)
        End Try
    End Sub

    Public Sub actualizar(ByVal modelo As Evento)
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "UPDATE EVENTO SET PROVEEDOR_IDPROVEEDOR=@VALOR2, DEPORTE_IDDEPORTE=@VALOR3, UBICACION=@VALOR4, DESCRIPCION=@VALOR5, FECHA_EVENTO=@VALOR6 WHERE IDEVENTO=@VALOR1"

            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", modelo.idevento)
            cmd.Parameters.AddWithValue("@VALOR2", modelo.idproveedor)
            cmd.Parameters.AddWithValue("@VALOR3", modelo.iddeporte)
            cmd.Parameters.AddWithValue("@VALOR4", modelo.ubicacion)
            cmd.Parameters.AddWithValue("@VALOR5", modelo.descripcion)
            cmd.Parameters.AddWithValue("@VALOR6", modelo.fecha_evento)
            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("EventoDAO: No actualizó")
            End If

            cn.Close()

        Catch ex As Exception
            MsgBox(ex.Message)
            Throw New DAOExcepcion(ex.ToString)
        End Try

    End Sub

End Class
